package com.shop.jpa;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.data.repository.PagingAndSortingRepository;

import java.io.Serializable;

/**
 * 基础 Repository 扩展
 * 
 * @author Jerry  2018-7-18 12:26:52
 * @param <T>
 * @param <ID>
 */
@NoRepositoryBean
public interface BaseDao<T, ID extends Serializable>
		extends
		JpaRepository<T, ID>,
		JpaSpecificationExecutor<T>,
		PagingAndSortingRepository<T, ID> {

	/**
	 * 根据ID查询对象
	 *
	 * @param id
	 * @return
	 */
	T findSingle(ID id);

	/**
	 * 恢复数据
	 *
	 * @param id
	 * @return
	 */
	int recover(ID id);
	/**
	 * 恢复数据
	 *
	 * @param id
	 * @return
	 */
	int recover(Iterable<ID> id);

	/**
	 * 物理删除数据
	 *
	 * @param id
	 * @return
	 */
	int remove(ID id);
	/**
	 * 物理删除数据
	 *
	 * @param ids
	 * @return
	 */
	int remove(Iterable<ID> ids);
	
}
